1612. Измените единицу

 

Задано целое число n. С помощью битовых операций замените крайний правый бит 1 в двоичном представлении числа n на 0.

 

Вход. Одно целое число n (1 ≤ n ≤ 108).

 

Выход. Выведите одно измененное число.

 

Пример входа

Пример выхода

18

16

 

 

РЕШЕНИЕ

элементарная задача – битовые операции

 

Анализ алгоритма

Рассмотрим выполнение бинарной операции n & (n – 1) для натурального числа n:

Если у числа n заменить самый правый единичный бит на ноль, то получится число n & (n – 1).

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d",&n);

 

Вычисляем и выводим ответ.

 

res = n & (n - 1);

printf("%d\n",res);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int res = n & (n - 1);

    System.out.println(res);

  }

}

 

Python реализация

Читаем входные данные.

 

n = int(input())

 

Вычисляем и выводим ответ.

 

res = n & (n - 1)

print(res)